package com.zhanglijie.improve.aqs.exclusive.interupt;

import java.util.concurrent.locks.LockSupport;

/**
 * @author zhanglijie
 * @version 1.0
 * @since 1.1.0 2022/9/12 0012 1:17
 */
public class AqsParkTest2 {
    public static void main(String[] args) {

        testTwo();

    }

    /**
     * 将阻塞
     */
    public static void  testOne(){
        LockSupport.park();//将count改为0
        LockSupport.unpark(Thread.currentThread());//_count改为1
        System.out.println("继续执行 已经被唤醒了");
    }

    /**
     * hold不住 unpark后，第一次park失效
     */
    public static void  testTwo(){
        LockSupport.unpark(Thread.currentThread());//_count改为1
        System.out.println(Thread.currentThread().isInterrupted());
        LockSupport.park();//将count改为0  第一次会失败
        System.out.println("继续执行 已经被唤醒了");
    }
    /**
     * hold不住 第一次 park失效  但是第二次成功
     */
    public static void  testThree(){
        LockSupport.unpark(Thread.currentThread());//_count改为1
        LockSupport.park();// 判断 count是否》0 如果大于 count=0 return
        LockSupport.park();//将count改为0
        System.out.println("继续执行 已经被唤醒了");
    }
}
